package cn.wuxing.mediation.web.controller.statistics;

import cn.wuxing.mediation.common.core.page.TableDataInfo;
import cn.wuxing.mediation.system.domain.vo.MediationTypeVo;
import cn.wuxing.mediation.system.domain.vo.MediatorTimeVo;
import cn.wuxing.mediation.system.domain.vo.MediatorVo;
import cn.wuxing.mediation.system.service.StatisticsService;
import cn.wuxing.mediation.common.core.controller.BaseController;
import cn.wuxing.mediation.common.core.domain.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/statistics")
/*
 * 统计分析
 * */
public class StatisticsController extends BaseController {

    @Autowired
    private StatisticsService statisticsService;


    /*
     * 纠纷案件总况分析 String source 来源 1非纠纷 2一般 3诉前 eventType 纠纷类型  level等级,
     * */
    @GetMapping("/total")
    public AjaxResult total(String source,Integer eventType, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        //区域 案件数量 待分派数 已分派数 待受理数 已受理数 待调解数 已调解数 调解成功数 调解成功率
        List<Object> date = statisticsService.overallSituation(source,eventType,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 纠纷类型分析
     * */
    @GetMapping("/typeStatistics")
    public AjaxResult typeStatistics(String source, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        //区域 案件数量 待分派数 已分派数 待受理数 已受理数 待调解数 已调解数 调解成功数 调解成功率
        List<Object> date = statisticsService.typeStatistics(source,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 纠纷区域分析  source来源（必传） level穿透等级 startTime开始时间 endTime结束时间
     * */
    @GetMapping("/regionalAnalysis")
    public AjaxResult regionalAnalysis(String source, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.regionalAnalysis(source,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 纠纷主体分析  source来源（必传）（暂未做） level穿透等级 startTime开始时间 endTime结束时间
     * */
    @GetMapping("/subjectStatistics")
    public AjaxResult subjectStatistics(String source, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.subjectStatistics(source,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 纠纷趋势分析  source来源（必传）（暂未做） level穿透等级 startTime开始时间 endTime结束时间
     * */
    @GetMapping("/trendStatistics")
    public AjaxResult trendStatistics(String dayNum,String source,Integer eventType, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.trendStatistics(dayNum,source,eventType,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 纠纷涉事人员年龄段分析  source来源（必传）（暂未做） level穿透等级 startTime开始时间 endTime结束时间
     * */
    @GetMapping("/ageStatistics")
    public AjaxResult ageStatistics(String source, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.ageStatistics(source,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 纠纷涉事人员性别分析  source来源（必传）（暂未做） level穿透等级 startTime开始时间 endTime结束时间
     * */
    @GetMapping("/sexStatistics")
    public AjaxResult sexStatistics(String source,Integer eventType, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.sexStatistics(source,eventType,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 时间段高发纠纷类型分析  source来源（必传）（暂未做） level穿透等级 startTime开始时间 endTime结束时间 type代表类型  按周1还是按月2还是按年3
     * */
    @GetMapping("/highTypeStatistics")
    public AjaxResult highTypeStatistics(String dateType,String source, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.highTypeStatistics(dateType,source,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 时间段高发纠纷区域分析  source来源（必传）（暂未做） level穿透等级 startTime开始时间 endTime结束时间 type代表类型  按周1还是按月2还是按年3
     * */
    @GetMapping("/highRegionStatistics")
    public AjaxResult highRegionStatistics(String dateType,String source, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.highRegionStatistics(dateType,source,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /*
     * 时间段高发纠纷主体分析  source来源（必传）（暂未做） level穿透等级 startTime开始时间 endTime结束时间 type代表类型  按周1还是按月2还是按年3
     * */
    @GetMapping("/highSubjectStatistics")
    public AjaxResult highSubjectStatistics(String dateType,String source, String level,String startTime,String endTime,Long Id) {
        if(source==null){
            source="";
        }
        List<Object> date = statisticsService.highSubjectStatistics(dateType,source,level,startTime,endTime,Id);
        return AjaxResult.success(date);
    }

    /**
     * 查询调解员工作情况分析——总况分析列表
     */
    @GetMapping("/mediatorList")
    public TableDataInfo list(MediatorVo mediatorVo)
    {
        startPage();
        List<MediatorVo> list = statisticsService.selectMediatorVoList(mediatorVo);
        return getDataTable(list);
    }

    /**
     * 查询调解员工作情况分析——调解类型列表
     */
    @GetMapping("/mediatorTypeList")
    public TableDataInfo mediatorTypeList(MediationTypeVo mediationTypeVo)
    {
        startPage();
        List<MediationTypeVo> list = statisticsService.selectMediationTypeVoList(mediationTypeVo);
        return getDataTable(list);
    }

    /**
     * 查询调解员工作情况分析——调解时间列表
     */
    @GetMapping("/mediatorTimeList")
    public TableDataInfo mediatorTimeList(MediatorTimeVo mediatorTimeVo)
    {
        startPage();
        List<MediatorTimeVo> list = statisticsService.selectMediationTimeVoList(mediatorTimeVo);
        return getDataTable(list);
    }
}
